STL的vector::resize() 和 vector::reserve()区别和作用详解 | 您所在的位置:网站首页 › Shrink to by区别 › STL的vector::resize() 和 vector::reserve()区别和作用详解 |
一、概述
现在数组基本都用vector了,很方便,但可能对vector的某些属性还不是很了解。以前只是大概知道reserve和resize是分别干什么的,但是并不了解它们的真正目的是什么,今天仔细回顾了一下,终于弄懂了,现在做个记录。 二、区别和作用 1. resize() 设置有效空间,reserve() 设置总体容量通俗点说,假如蔡徐坤要开演唱会,地点定在了A体育馆,这个体育馆可容纳 5000 5000 5000人。在演唱会开始前卖票,发现销量不是很好,只卖出去了大概 300 300 300张票,但为了保险起见(避免溢出),在体育馆内放置了500把椅子。从这个例子来看,体育馆的 5000 5000 5000人容量是一开始蔡徐坤用 r e s e r v e ( ) reserve() reserve() 申请的 5000 5000 5000人总容量,放置的 500 500 500把椅子,是他用 r e s i z e ( ) resize() resize() 申请的 500 500 500人有效空间。 这里的 5000 5000 5000对应着 v e c t o r : : c a p a c i t y ( ) vector::capacity() vector::capacity(),而 500 500 500对应着 v e c t o r : : s i z e ( ) vector::size() vector::size()。 用代码来看看是不是这样 #include #include using namespace std; int main() { vector concert; concert.reserve(5000); concert.resize(500); cout vector concert; concert.resize(3000); concert.reserve(300); cout vector concert; concert.reserve(100000); //一开始就申请100000容量 concert.resize(5000); //一开始只放了5000把椅子 auto it = concert.begin(); cout |
CopyRight 2018-2019 实验室设备网 版权所有 |